package com.ruoyi.gateway.config;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.MediaType;
import org.springframework.web.reactive.function.server.RequestPredicates;
import org.springframework.web.reactive.function.server.RouterFunction;
import org.springframework.web.reactive.function.server.RouterFunctions;
import com.ruoyi.gateway.handler.ValidateCodeHandler;

/**
 * 路由配置信息
 * 功能：定义动态路由
 * @author ruoyi
 */
@Configuration
public class RouterFunctionConfiguration
{
    @Autowired
    private ValidateCodeHandler validateCodeHandler;

    @SuppressWarnings("rawtypes")
    /**
     * ‌RouterFunctions.route()‌是Spring WebFlux中的一个功能，它提供了一个路由器构建器，用于创建路由器。
     * 这个功能允许开发者通过编程方式定义路由规则，从而处理HTTP请求。
     * 具体来说，RouterFunctions.route()方法接受一个或多个路由条件及其对应的处理函数，当传入的请求匹配到
     * 某个路由条件时，就会执行相应的处理函数。这种方式提供了极大的灵活性，使得开发者可以更加精细地控制请求的
     * 处理流程
     */
    @Bean
    public RouterFunction routerFunction()
    {
        return RouterFunctions.route(
                RequestPredicates.GET("/code")
                                 .and(RequestPredicates.accept(MediaType.TEXT_PLAIN)),
                validateCodeHandler);
    }
}
